home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / embryo / examples / test.sma < prev   
Text File  |  2006-01-09  |  4KB  |  178 lines

  1. #include "test.inc"
  2.  
  3. /* This is ugly - please ignore this code! */
  4.  
  5. /* To compile: 
  6.  * embryo_cc ./test.sma -o test.amx
  7.  * 
  8.  * To test run:
  9.  * embryo ./test.amx
  10.  */
  11.  
  12. public global1 = 99;
  13. public global2 = 77;
  14.  
  15. main()
  16. {
  17.    printf("Testing switch and case statements...\n");
  18.    
  19.    new var;
  20.  
  21.    for (var = 1; var < 5; var++)
  22.      {
  23.     switch (var)
  24.       {
  25.        case 0:
  26.          printf("It's 0\n");
  27.        case 1:
  28.          printf("It's 1\n");
  29.        case 2:
  30.          printf("It's 2\n");
  31.        case 3:
  32.          printf("It's 3\n");
  33.        case 4:
  34.          printf("It's 4\n");
  35.        case 5:
  36.          printf("It's 5\n");
  37.        case 6:
  38.          printf("It's 6\n");
  39.        case 7:
  40.          printf("It's 7\n");
  41.        default:
  42.          printf("It's something else\n");
  43.       }
  44.      }
  45.    printf("\n\n");
  46.    printf("Testing for loops...\n");
  47.    for (var = 0; var < 10; var++)
  48.      {
  49.     printf("Var = %i\n", var);
  50.      }
  51.    
  52.    printf("\n\n");
  53.    printf("Testing recursion...\n");
  54.    var = recurse(3);
  55.    printf("var = %i\n", var);
  56.    
  57.    printf("\n\n");
  58.    printf("Testing while loops...\n");
  59.    var = 7;
  60.    while (var > 1)
  61.      {
  62.     printf("var = %i\n", var);
  63.     var--;
  64.      }
  65.    
  66.    printf("\n\n");
  67.    printf("Testing Float Math...\n");
  68.    new Float:a;
  69.    new Float:b;
  70.    new Float:c;
  71.    
  72.    c = 10.5;
  73.    printf("c = %f (should be 10.5)\n", c);
  74.    a = 5.0;
  75.    b = 2.345;
  76.    c = a + b;
  77.    printf("a = %f (should be 5.0)\n", a);
  78.    printf("b = %f (should be 2.345)\n", b);
  79.    printf("a + b = %f (should be 7.345)\n", c);
  80.    a = 2.5;
  81.    b = 3.5;
  82.    c = a * b;
  83.    printf("a = %f (should be 2.5)\n", a);
  84.    printf("b = %f (should be 3.5)\n", b);
  85.    printf("a 8 b = %f (should be 8.75)\n", c);
  86.    a = 5.5;
  87.    b = 1.5;
  88.    c = a / b;
  89.    printf("a = %f (should be 5.5)\n", a);
  90.    printf("b = %f (should be 1.5)\n", b);
  91.    printf("a / b = %f (should be 3.666666667)\n", c);
  92.    
  93.    printf("The printf() call is a native exported function. This should work\n");
  94.    printf("Calling testfn()...\n");
  95.    
  96.    new ret;
  97.    ret = testfn(12345, "A Test String", 7);
  98.    printf("Done. Return value of testfn() was %i\n", ret);
  99.    
  100.    printf("Test varargs...\n");
  101.    vargs(1, 2, "hello", "there", 8, 77, 5.0, 7.77);
  102.    
  103.    printf("\n\n");
  104.    
  105.    printf("native_rec(1, 77)\n");
  106.    native_rec(1, "Smelly", 77);
  107.    printf("native_rec() done\n");
  108.    
  109.    printf("atoi(\"7\") = %i\n", atoi("7"));
  110.    
  111.    return 7;
  112. }
  113.  
  114. public rec1(arg1, str[], arg2)
  115. {
  116.   printf("arg1=%i str=%s arg2=%i\n", arg1, str, arg2);
  117.   return native_rec(arg1 + 1, str, arg2);
  118. }
  119.  
  120. vargs(a, b, ...)
  121. {
  122.    printf("ARGS...\n");
  123.    printf("  a = %i\n", a);
  124.    printf("  b = %i\n", b);
  125.    for (new i = 2; i < numargs(); i++)
  126.      {
  127.     new val;
  128.     new Float:fval;
  129.     new str[100];
  130.     
  131.     printf("  GET ARG... %i\n", i);
  132.     if (i < 4)
  133.       {
  134.          getsarg(i, str, sizeof(str));
  135.          printf("    ARG: %s [max %i]\n", str, sizeof(str));
  136.       }
  137.     else if (i < 6)
  138.       {
  139.          val = getarg(i);
  140.          printf("    ARG: %i\n", val);
  141.       }
  142.     else if (i < 8)
  143.       {
  144.          fval = getfarg(i);
  145.          printf("    FARG: %f\n", fval);
  146.       }
  147.      }
  148.    printf("ARGS DONE.\n");
  149. }
  150.  
  151. recurse(val)
  152. {
  153.    printf("Recurse: val = %i\n", val);
  154.    if (val >= 10) return val;
  155.    return recurse(val + 1);
  156. }
  157.  
  158. tester(arg1=0, str[]="", arg2=0)
  159. {
  160.    if (arg1 == 7) printf("arg1 == 7!!!\n");
  161.    printf("  TESTER: arg1=%i str='%s' arg2=%i\n", arg1, str, arg2);
  162. }
  163.  
  164. public testfn(arg1, str[], arg2)
  165. {
  166.    new a = 10;
  167.    new Float:b = 20.0;
  168.    
  169.    printf("arg1=%i str='%s' arg2=%i\n", arg1, str, arg2);
  170.    
  171.    printf("float test %i %f\n", a, b);
  172.    
  173.    tester(77, "blahdieblah", 1024);
  174.    if (arg1 == 7) printf("arg1 == 7!!!\n");
  175.    
  176.    return 5;
  177. }
  178.